// import puppeteer from "puppeteer";
import puppeteer from "./puppeteer.js";

export default class Chrome {
  // 启动浏览器
  async launch(options) {
    return puppeteer.launch({
      headless: false, // 无头模式
      defaultViewport: { width: 1366, height: 800 }, // 设置默认视口大小
      // args: [
      //   "--no-sandbox", // 禁用沙箱（放开权限）
      //   "--disable-setuid-sandbox", // 禁用setuid沙箱
      //   "--disable-blink-features=AutomationControlled",
      // ],
      // // userDataDir,// 用户数据目录
      // // slowMo: 100, // 延迟每一次操作的毫秒数
      // ignoreHTTPSErrors: true, // 忽略HTTPS错误
      ...options,
    });
  }

  // 判断原生是否存在
  async $exist(select) {
    return await this.page.evaluate((select) => {
      return $(select);
    }, select);
  }

  // 浏览网页
  async view(url) {
    await this.page.goto(url, {
      waitUntil: "networkidle2",
    });
  }

  // 输入
  async input(select, value, delay = 100) {
    await this.page.type(select, value, { delay });
    await this.sleep(this.random(2, 3) * 1000);
    // await page.keyboard.press('Enter')
  }

  // 点击
  async click(select) {
    const { page } = this;

    const el = await page.$(select);
    await el.click();
  }

  // 回车键
  async enter() {
    await this.page.keyboard.press("Enter");
  }

  // 延迟
  sleep(time = 1000) {
    return new Promise((resolve) => {
      setTimeout(resolve, time);
    });
  }

  // 随机数
  random(min, max) {
    return Math.floor(Math.random() * (max - min + 1) + min);
  }
}
